home *** CD-ROM | disk | FTP | other *** search
- /*
- * FoldOberoProgs.wrx V 1.0 © 1994 Tim Teulings
- *
- * Ein Script für den Texeditor WRITE ab V.3.508 © Tim Teulings
- *
- * Dieses Script faltet den Körper aller Oberon-Prozeduren (erster Level)
- * weg.
- * Dabei muß folgende Formatierung eingehalten werden :
- * - Das Keywort 'PROCEDURE' muß in der 3. Spalte anfangen.
- * - Das dazugehörige 'END <Prozedurname>'' muß sich ebenfalls in der
- * dritten Spalte befinden.
- *
- * Dies kann allerdings durch ändern der Variablen HEADER und BODYEND
- * geändert werden.
- *
- * Formatierungfehler führen möglicherweise dazu, daß Faltungen falsch
- * gesetzt werden.
- */
-
- OPTIONS RESULTS
-
- IF ~show('P',"WRITE")
- THEN DO
- say 'Dieses Script läuft nur, wenn WRITE bereits gestartet wurde !'
- exit 10
- END
-
- ADDRESS "WRITE"
-
- 'VERSIONCHECK 31090 "FoldOberonProcs.wrx"'
- IF RC~=0 THEN DO
- exit 10
- END
-
- 'GETVAR "_CurrentID"'
- ID = RESULT /* GETVAR gibt den ID des aktuellen Fenster zurück, */
- /* der von den weiteren Befehlen benötigt wird. */
-
- IF ID=0 THEN DO
- MESSAGEOK (Kein Fenster aktiviert !)
- EXIT
- END
-
- OPENPORT ID /* PrivatePort des aktuellen Fensters öffnen */
- Port = RESULT
-
- IF Port="" THEN DO /* 'OPENPORT' gibt "" zurück, wenn Port nicht */
- /* geöffnet werden konnte */
-
- LOCKWINDOW ID /* Fenster wird einfach gelockt */
- END
- ELSE DO
- INTERPRET ADDRESS Port /* PrivatePort addressieren. Alle Komandos */
- /*beziehen sich nun auf das Fenster mit diesem Port */
- END
-
- 'SILENT' /* Silent-Mode wegen Geschwindigkeit */
-
- HEADER = ' PROCEDURE'
- BODYEND = ' END'
-
- 'GETVAR "_xPos"' /* Cursorposition holen */
- OldPos.x = RESULT
- 'GETVAR "_yPos"'
- OldPos.y = RESULT
-
- GOTO @SOT @SOT
-
- SETVAR "(" || _FindString || ")" "(" || HEADER || ")"
- 'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
-
- DO WHILE RC = 0
-
- 'GETVAR "_xPos"'
- xPos = RESULT
- 'GETVAR "_yPos"'
- From = RESULT
-
- IF xPos=1 THEN DO
-
- /*
- * Die folgenden kommentierten Zeeilen matchen bei PROCEDURE .. END
- * die Prozedurnamen, versagen allerdings bei Deklarationen des Types
- * PROCEDURE ( sff : wee) <ProcName>
- */
-
- /* 'NEXTWORD NEXTWORD'
- 'GETVAR "_CurrentWord"'
- PROCNAME = RESULT
-
- SETVAR "(" || _FindString || ")" "(" || BODYEND || " " || PROCNAME || ";" || ")"
-
- 'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
- IF RC=0 THEN DO
- 'GETVAR "_xPos"'
- xPos = RESULT
- 'GETVAR "_yPos"'
- TO = RESULT
-
- IF xPos=1 THEN DO
- Fold From+1 To
- END
- END */
-
- /* Alternativlösung */
-
- SETVAR "(" || _FindString || ")" "(" || BODYEND || ")"
- 'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
- RES = RC
- 'GETVAR "_xPos"'
- xPos = RESULT
-
- DO WHILE RES = 0 & xPos~=1
- 'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
- RES = RC
- 'GETVAR "_xPos"'
- xPos = RESULT
- END;
-
- IF RES = 0 THEN DO
- 'GETVAR "_YPos"'
- To = RESULT
-
- Fold From+1 To
- END
-
- /* Ende der Alternativlösung */
-
- END
-
- SETVAR "(" || _FindString || ")" "(" || HEADER || ")"
- FIND 1 From+1 '@EOT @EOT {@SILENT @CASE}'
- END
-
- GOTO OldPos.x OldPos.y
-
- WINDOW 0 0 0 0 /* Silent-Mode wieder ausschalten */
-
- "MESSAGEOK (REXX-Script\n'FoldOberonProc.wrx'\n\nFertig !)"
-
- IF Port="" THEN DO
- LOCKWINDOW 0
- END
- ELSE DO
- CLOSEPORT ID
- END
-